package com.eastmelon.io;

import java.io.FileReader;
import java.io.IOException;

/**
 * @author eastmelon
 * @date 2016年8月10日下午11:50:30
 * @version 1.0
 * @description 明白了readLine的实现原理之后，就可以自己写一个实现一次第一行的方法了
 * 基于FileReader来实现
 */
public class BufferedReadLine {
	private FileReader fr;
	BufferedReadLine(FileReader fr){
		this.fr=fr;
	}
	public static void main(String[] args) throws IOException {
		FileReader f=new FileReader("D:\\test.txt");
		BufferedReadLine bReadLine=new BufferedReadLine(f);
		String str=null;
		while((str=bReadLine.readLine())!=null){
			System.out.println(str);
		}
		bReadLine.close();
	}
	//一次读一行数据的方法
	public String readLine() throws IOException{
		//定义一个临时容器，FileReader用的是数组这边使用StringBuilder
		StringBuilder sb=new StringBuilder();
		int ch=0;
		while((ch=fr.read())!=-1){
			if(ch=='\r'){
				continue;
			}
			if(ch=='\n'){
				return sb.toString();
			}
			else{
				sb.append((char)ch);
			}
		}
		if(sb.length()>0){
			return sb.toString();
		}
		return null;
	}
	
	public void close() throws IOException{
		fr.close();
	}

}
